﻿namespace Sage.WindowsProcess.AutoStartup
{
    /// <summary>
    /// 提供Windows系统下程序开机自启动管理的接口
    /// </summary>
    public interface IStartupService
    {
        /// <summary>
        /// 设置应用程序为开机自动启动
        /// </summary>
        /// <exception cref="InvalidOperationException">当无法访问注册表或设置失败时抛出</exception>
        /// <exception cref="FileNotFoundException">当指定的应用程序路径不存在时抛出</exception>
        /// <exception cref="ArgumentException">当指定的文件不是有效的可执行文件时抛出</exception>
        void SetStartup();

        /// <summary>
        /// 移除应用程序的开机自动启动设置
        /// </summary>
        /// <exception cref="InvalidOperationException">当无法访问注册表或移除失败时抛出</exception>
        void RemoveStartup();

        /// <summary>
        /// 检查应用程序是否已设置为开机自动启动
        /// </summary>
        /// <returns>如果应用程序已设置为开机自动启动则返回true，否则返回false</returns>
        /// <exception cref="InvalidOperationException">当无法访问注册表或检查失败时抛出</exception>
        bool IsStartupSet();
    }
}
